import { defineStore } from 'pinia'
import { ref } from 'vue'

export interface UserInfo {
  username: string
  type: 'admin' | 'visitor' | ''
}

export const useUserStore = defineStore(
  'MuseumUser',
  () => {
    // 用户信息，包含用户名和角色类型
    const userInfo = ref<UserInfo>({
      username: '',
      type: '',
    })

    // 设置用户信息
    function setUserInfo(info: UserInfo) {
      userInfo.value = info
    }

    // 清除用户信息（登出时使用）
    function clearUserInfo() {
      userInfo.value = {
        username: '',
        type: '',
      }
    }

    // 判断用户是否已登录
    const isLoggedIn = () => {
      return !!userInfo.value.username
    }

    // 判断用户是否是管理员
    const isAdmin = () => {
      return userInfo.value.type === 'admin'
    }

    // 判断用户是否是游客
    const isVisitor = () => {
      return userInfo.value.type === 'visitor'
    }

    return {
      userInfo,
      setUserInfo,
      clearUserInfo,
      isLoggedIn,
      isAdmin,
      isVisitor,
    }
  },
  {
    // 启用持久化存储，登录后刷新页面不会丢失用户信息
    persist: true,
  },
)
